package cn.edu.jmu.oelp.repository;

import cn.edu.jmu.oelp.pojo.EntityRelation;
import org.springframework.data.neo4j.repository.Neo4jRepository;

import java.util.List;

/**
 * 对实体间关系Repo的测试
 * @author damao
 */

public interface EntityRelationRepository extends Neo4jRepository<EntityRelation,Long> {

    List<EntityRelation> findAll();
    /**
     *
     * @param id 标注实体间关系的id
     * @return 返回该id的关系
     */
    EntityRelation findById(long id);

    /**
     *
     * @param relationId
     * @return 返回mysql表中id为relationId的关系
     */
    EntityRelation findByRelationId(long relationId);
    /**
     *
     * @param id 起始标注实体节点的id
     * @return 返回从该实体出发的关系列表
     */
    List<EntityRelation> findByStartEntityId(long id);

    /**
     *
     * @param id 终止标注实体节点的id
     * @return 返回到该实体终止的关系列表
     */
    List<EntityRelation> findByEndEntityId(long id);

    /**
     *
     * @param type 标注实体之间关系的类型
     * @return 返回该类型的关系列表
     */
    List<EntityRelation> findByType(String type);

    /**
     *
     * @param startEntityId 起始节点的id
     * @param endEntityId 终止节点的id
     * @return 该起始节点和该终止节点之间的关系列表
     */
    List<EntityRelation> findByStartEntityIdAndEndEntityId(long startEntityId, long endEntityId);

    /**
     *
     * @param startEntityId 起始节点id
     * @param endEntityId 终止节点id
     * @param type 关系类型
     * @return 返回符合条件的关系实体
     */
    EntityRelation findByStartEntityIdAndEndEntityIdAndType(long startEntityId, long endEntityId, String type);
    /**
     *
     * @param entityRelation 实体关系实例
     * @return 返回添加成功后的参数
     */

}
